import sys
def solution(n, bd, kt):
res_s, res = 0, []
while n:
if n >= 2:
if len(bd) == 0 and len(kt) == 0:
break
if len(bd) == 0:
kts = kt.pop()
res_s += kts[0]
res.append(kts[1])
n -= 2
continue
if len(kt) == 0:
bds = bd.pop()
res_s += bds[0]
res.append(bds[1])
n -= 1
continue
if n > 2 and n % 2 == 1:
if bd[-1][0] > (kt[-1][0] / 2):
bd1 = bd.pop()
res_s += bd1[0]
res.append(bd1[1])
n -= 1
else:
kts = kt.pop()
res_s += kts[0]
res.append(kts[1])
n -= 2
continue
if n >= 2:
if len(bd) >= 2:
if kt[-1][0] > bd[-1][0] + bd[-2][0]:
kts = kt.pop()
res_s += kts[0]
res.append(kts[1])
n -= 2
else:
bd1 = bd.pop()
bd2 = bd.pop()
res_s += bd1[0] + bd2[0]
res.append(bd1[1])
res.append(bd2[1])
n -= 2
else:
if kt[-1][0] > bd[-1][0]:
kts = kt.pop()
res_s += kts[0]
res.append(kts[1])
n -= 2
else:
bd1 = bd.pop()
res_s += bd1[0]
res.append(bd1[1])
n -= 1
continue
if n == 1:
if len(bd) > 0:
bds = bd.pop()
res_s += bds[0]
res.append(bds[1])
n -= 1
print(res_s)
print(' '.join(map(str, res)))
inp = [tuple(map(int, line.strip().split())) for line in sys.stdin]
_, n = inp[0]
bd, kt = [], []
for i in range(1, len(inp)):
if inp[i][0] == 1:
bd.append((inp[i][1], i))
else:
kt.append((inp[i][1], i))
bd.sort(key=lambda x:x[0])
kt.sort(key=lambda x:x[0])
solution(n, bd, kt)
682. Baseball Game | 496. Next Greater Element I |
232. Implement Queue using Stacks | 844. Backspace String Compare |
20. Valid Parentheses | 746. Min Cost Climbing Stairs |
392. Is Subsequence | 70. Climbing Stairs |
53. Maximum Subarray | 1527A. And Then There Were K |
1689. Partitioning Into Minimum Number Of Deci-Binary Numbers | 318. Maximum Product of Word Lengths |
448. Find All Numbers Disappeared in an Array | 1155. Number of Dice Rolls With Target Sum |
415. Add Strings | 22. Generate Parentheses |
13. Roman to Integer | 2. Add Two Numbers |
515. Find Largest Value in Each Tree Row | 345. Reverse Vowels of a String |
628. Maximum Product of Three Numbers | 1526A - Mean Inequality |
1526B - I Hate 1111 | 1881. Maximum Value after Insertion |
237. Delete Node in a Linked List | 27. Remove Element |
39. Combination Sum | 378. Kth Smallest Element in a Sorted Matrix |
162. Find Peak Element | 1529A - Eshag Loves Big Arrays |